package com.example.utils;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.util.CollectionUtils;

import java.util.List;

/**
 * @author crt
 */
public class SearchUtil {

    public static<E> QueryWrapper<E> parseWhereSql(List<ConditionVo> conditionVoList){
        QueryWrapper<E> queryWrapper = new QueryWrapper<>();
//        Gson gson = new Gson();
////        String json = gson.toJson(conditionJson).substring(1, gson.toJson(conditionJson).length() - 1);
//        String json = gson.toJson(conditionJson);
//        if(!ObjectUtils.isEmpty(json)){
//        List<ConditionVo> conditionList = JSON.parseArray(json,ConditionVo.class);
        if(!CollectionUtils.isEmpty(conditionVoList)){
            for(ConditionVo conditionVo : conditionVoList){
                switch (conditionVo.getType()){
                    case "eq": queryWrapper.eq(conditionVo.getColumn(),conditionVo.getValue());break;
                    case "ne": queryWrapper.ne(conditionVo.getColumn(),conditionVo.getValue());break;
                    case "like": queryWrapper.like(conditionVo.getColumn(),conditionVo.getValue());break;
                    case "leftlike": queryWrapper.likeLeft(conditionVo.getColumn(),conditionVo.getValue());break;
                    case "rightlike": queryWrapper.likeRight(conditionVo.getColumn(),conditionVo.getValue());break;
                    case "notlike": queryWrapper.notLike(conditionVo.getColumn(),conditionVo.getValue());break;
                    case "gt": queryWrapper.gt(conditionVo.getColumn(),conditionVo.getValue());break;
                    case "lt": queryWrapper.lt(conditionVo.getColumn(),conditionVo.getValue());break;
                    case "ge": queryWrapper.ge(conditionVo.getColumn(),conditionVo.getValue());break;
                    case "le": queryWrapper.le(conditionVo.getColumn(),conditionVo.getValue());break;
                }
            }
        }
        return queryWrapper;
    }

}
